﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using com.clinica.business.BE.acttar;
using com.clinica.business.BE.comun;
using LiclUtil;
using LiclActTar.Views;
using System.Text;

namespace wesiGestClinica.acttar
{
    public partial class FormsConBandejaTarifarios : Shared.SMGPaseBase, ILiclBandejaTarifarios
    {
        private LiclBandejaTarifariosPresenter oPresenter = new LiclBandejaTarifariosPresenter();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                oPresenter.View = this;
                string Num = string.Empty;
                this.Master.TituloModulo = "Solicitud de Tarifarios";
                CargarTipoDocumento();
                IniciarControles();
                EstablecerModos(0);
                Num = Request.QueryString["action"].ToString().Trim();
                oPresenter.onIniciar(int.Parse(Num));
            }
            Master.OcultarMensaje();
            oPresenter.View = this;
        }
        protected override void DefineHandlers()
        {
            btn_Buscar.Click += new EventHandler(btn_Buscar_Click);
            dg_Tarifarios.RowCommand += new GridViewCommandEventHandler(dg_Tarifarios_RowCommand);
            UCBarra1.img_Nuevo.Click += new ImageClickEventHandler(img_Nuevo_Click);
        }
           
        
        private void IniciarControles()
        {
            DateTime fechaHasta = new DateTime();
            DateTime fechaDesde = new DateTime();
            fechaDesde = DateTime.Now.AddDays(-7);
            fechaHasta = DateTime.Today.ToUniversalTime();
            UCFecDesde.Texto = fechaDesde.ToString("dd/MM/yyyy");
            UCFecHasta.Texto = fechaHasta.ToString("dd/MM/yyyy");
            if (rbl_TipoDocumento.Items.Count > 0)
                rbl_TipoDocumento.Items[0].Selected = true;

            List<TarifarioBE> lst = new List<TarifarioBE>();
            lst.Add(new TarifarioBE());
            dg_Tarifarios.DataSource = lst;
            dg_Tarifarios.DataBind();
        }

        #region Eventos
        void btn_Buscar_Click(object sender, EventArgs e)
        {
            if (ValidarBusqueda())
            {
                TarifarioBE oTar = new TarifarioBE();
                oTar.TipoSolicitud = int.Parse(rbl_TipoDocumento.SelectedValue);
                if (txt_Numero.Text.Trim() != string.Empty)
                {
                    oTar.NumeroSolicitud = int.Parse(txt_Numero.Text.Trim());
                }
                oTar.Descripcion = txt_Descripcion.Text.Trim();
                if (Request.QueryString["action"].ToString().Trim() != string.Empty)
                {
                    if (Request.QueryString["action"].ToString().Trim() == "0")
                        oPresenter.onObtener_SolicitudesTarifario(oTar, DateTime.Parse(UCFecDesde.Texto.Trim()), DateTime.Parse(UCFecHasta.Texto.Trim()));
                    else if (Request.QueryString["action"].ToString().Trim() == "1")
                        oPresenter.onObtener_SolicitudesTarifario_Estado(oTar, DateTime.Parse(UCFecDesde.Texto.Trim()), DateTime.Parse(UCFecHasta.Texto.Trim()));
                }                        
            }
        }
        void img_Nuevo_Click(object sender, ImageClickEventArgs e)
        {
            string url = "FormsManSolicitudTarifarios.aspx?action=1&TipoSol=&Num=";
            string script = "window.location = '" + url + "';";
            ScriptManager.RegisterStartupScript(this, typeof(Page), "RedirectTo", script, true);
        }
        void dg_Tarifarios_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Modificar")
            {
                string strUrl = string.Empty;
                string strScript = string.Empty;
                GridViewRow fila = (GridViewRow)((ImageButton)e.CommandSource).NamingContainer;
                dg_Tarifarios.SelectedIndex = fila.RowIndex;
                string[] arr = e.CommandArgument.ToString().Split(new char[] { '|' });
                if (arr[0].ToString().Trim() != "0" && arr[1].ToString().Trim() != "0")
                {
                    if (Request.QueryString["action"].ToString().Trim() == "0")
                        strUrl = "FormsManSolicitudTarifarios.aspx?action=2&TipoSol=" + arr[0] + "&Num=" + arr[1];
                    else if (Request.QueryString["action"].ToString().Trim() == "1")
                        strUrl = "FormsManSolicitudTarifarios.aspx?action=3&TipoSol=" + arr[0] + "&Num=" + arr[1];
                    strScript = "window.location = '" + strUrl + "';";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "RedirectTo", strScript, true);
                }

            }


            else  if (e.CommandName == "Anular")
            {
                string strUrl = string.Empty;
                string strScript = string.Empty;
                GridViewRow fila = (GridViewRow)((ImageButton)e.CommandSource).NamingContainer;
                dg_Tarifarios.SelectedIndex = fila.RowIndex;
                string[] arr = e.CommandArgument.ToString().Split(new char[] { '|' });
                TarifarioBE objTarifario = new TarifarioBE();
                objTarifario.CodigoTarifario =Int32.Parse( arr[1]);
                objTarifario.TipoSolicitud = Int32.Parse(arr[0]);

                oPresenter.AnularTarifario(objTarifario);

         
                btn_Buscar_Click(sender,e);


            }
            else if (e.CommandName == "Ver")
            {
                string strUrl = string.Empty;
                string strScript = string.Empty;
                GridViewRow fila = (GridViewRow)((ImageButton)e.CommandSource).NamingContainer;
                dg_Tarifarios.SelectedIndex = fila.RowIndex;
                string[] arr = e.CommandArgument.ToString().Split(new char[] { '|' });
                if (arr[0].ToString().Trim() != "0" && arr[1].ToString().Trim() != "0")
                {
                    if (Request.QueryString["action"].ToString().Trim() == "0")
                        strUrl = "FormsManSolicitudTarifarios.aspx?action=2&TipoSol=" + arr[0] + "&xsololectura=1&Num=" + arr[1];
                    else if (Request.QueryString["action"].ToString().Trim() == "1")
                        strUrl = "FormsManSolicitudTarifarios.aspx?action=3&TipoSol=" + arr[0] + "&xsololectura=1&Num=" + arr[1];
                    strScript = "window.location = '" + strUrl + "';";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "RedirectTo", strScript, true);
                }


            }

        }   
        #endregion
        #region Metodos
        private void EstablecerModos(int modo)
        {
            switch (modo)
            {
                case 0:
                    rbl_TipoDocumento.Enabled = true;
                    UCBarra1.img_Nuevo.Visible = true;
                    UCBarra1.img_Volver.Visible = true;
                    dg_Tarifarios.Columns[7].Visible = true;
                    dg_Tarifarios.Columns[8].Visible = true;
                    break;
                case 1:                  
                    UCBarra1.img_Nuevo.Visible = false;
                    UCBarra1.img_Volver.Visible = false;
                    dg_Tarifarios.Columns[7].Visible = false;
                    dg_Tarifarios.Columns[8].Visible = false;
                    break;
            }
        }
        private void CargarTipoDocumento()
        {
            ParametrosBE oParm = new ParametrosBE();
            oParm.NombreTabla = "TIPTAR1";
            oPresenter.onObterner_Tabla(oParm);
        }
        public bool HabilitarBotonesGrilla(string tipoLiq, string Estado, string Accion)
        {
            bool val = false;
            #region habilitar
            switch (Accion)
            {
                case "1": // Editar
                    //if (tipoLiq == "2")
                    //{
                        if (Estado == "2" || Estado == "5" || Estado == "6")
                            val = true;
                        else
                            val = false;
                    //}
                    //else
                    //    val = false;
                    break;
                case "2": // Anular
                    if (Estado != "1" )
                        val = true;
                    break;
                case "3": // Ver
                    val = true;
                    break;
                default:
                    break;
            }
            #endregion
            return val;
        }
        private bool ValidarBusqueda()
        {
            bool bolVal = true;
            StringBuilder strErrores = new StringBuilder();

            if (txt_Numero.Text.Trim() != string.Empty)
            {
                try
                {
                    int.Parse(txt_Numero.Text.Trim());
                }
                catch (Exception ex)
                {
                    bolVal = false;
                    Master.MostrarMensaje(" Solo ingrese caracteres numericos en Número de documento o en Valor ingresado es muy grande", TipoMensaje.Error);
                }
            }
            try
            {
                DateTime.Parse(UCFecDesde.Texto.Trim());
                DateTime.Parse(UCFecHasta.Texto.Trim());
            }
            catch (Exception ex)
            {
                bolVal = false;
                strErrores.Append(ex.Message.Trim());
            }
            if (bolVal)
            {
                if (DateTime.Compare(DateTime.Parse(UCFecDesde.Texto.Trim()), DateTime.Parse(UCFecHasta.Texto.Trim())) > 0)
                {
                    bolVal = false;
                    strErrores.Append(" La fecha hasta no puede se mayor que la fecha desde");
                }
            }
            if (!bolVal)
            {
                Master.ColocarMensaje(TipoMensaje.Error, strErrores.ToString(), strErrores.ToString());
            }
            return bolVal;
        }

        #endregion
        #region ILiclBandejaTarifarios Members

        public void ObtenerTabla(List<com.clinica.business.BE.comun.ParametrosBE> lst)
        {
            rbl_TipoDocumento.DataSource = lst;
            rbl_TipoDocumento.DataValueField = "Codigo";
            rbl_TipoDocumento.DataTextField = "DescripcionCorta";
            rbl_TipoDocumento.DataBind();
        }
        public void ObtenerSolicitudTarifarios(List<TarifarioBE> lst)
        {
            if (lst.Count > 0)
            {
                dg_Tarifarios.DataSource = lst;
                dg_Tarifarios.DataBind();
                lbl_Cantidad.Text = lst.Count.ToString() + " Registros(s) encontrados";
            }
            else
            {
                lst.Add(new TarifarioBE());
                dg_Tarifarios.DataSource = lst;
                dg_Tarifarios.DataBind();
                Master.MostrarMensaje("No Existen   Solicitudes de Tarifarios para el criterio de busqueda", TipoMensaje.Advertencia);
                lbl_Cantidad.Text = "0 Registros(s) encontrados";
            }
        }
        public void MostrarMensajeError(string Mensaje)
        {
            Master.MostrarMensaje(Mensaje.Trim(), TipoMensaje.Error);
        }

        #endregion


        #region ILiclBandejaTarifarios Members


        public void CargarInicio(int accion)
        {
            if (accion == 0)
            {
                EstablecerModos(0);
                
            }
            else if (accion == 1)
            {
                EstablecerModos(1);                
                rbl_TipoDocumento.SelectedValue = "1";

            }
        }

        #endregion
    }
}
